//
//  WMNetworkManager.h
//  WMNetworkSDK
//
//  Created by wxiang on 2020/9/28.
//

#import <Foundation/Foundation.h>
@class AFHTTPSessionManager;

NS_ASSUME_NONNULL_BEGIN

/**
 *  网络请求进度回调
 *
 *  @param uploadProcess 操作信息
 */
typedef void(^httpUploadProcess)(NSProgress *uploadProcess);

/**
 *  网络请求成功回调
 *
 *  @param task           操作信息
 *  @param responseObject 成功信息
 */
typedef void(^httpResponseSuccess)(NSURLSessionDataTask *task, id responseObject);

/**
 *  网络请求失败回调
 *
 *  @param task  操作信息
 *  @param error 失败信息
 */
typedef void(^httpResponseFailure)(NSURLSessionDataTask *task, NSError *error);

typedef void(^responseSuccess)(NSDictionary *response);// 苹果原生的请求 返回数据

@interface WMNetworkManager : NSObject

/**
 *  网络请求对象
 */
@property (nonatomic,strong)AFHTTPSessionManager *httpSessionManager;

/**
 *  设置缓存策略  默认缓存策略
 */
@property (nonatomic,assign)NSURLRequestCachePolicy cachePolicy;

/**
 *  设置超时时间  系统默认5秒
 */
@property (nonatomic,assign)NSTimeInterval timeoutInterval;



/**
 *  单例
 *
 *  @return 单例对象
 */
+ (instancetype)sharedManager;

- (void)handleHttpHeader:(NSString *)key value:(id)value;

/**
 *  GET请求
 *
 *  @param url        URL路径
 *  @param parameters 请求参数
 *  @param success    成功回调
 *  @param failure    失败回调
 */
- (void)getHttpWithURL:(NSString *) url Parameters:(NSDictionary *) parameters Success:(httpResponseSuccess) success Failure:(httpResponseFailure) failure;

/**
 *  POST请求
 *
 *  @param url        URL路径
 *  @param parameters 请求参数
 *  @param success    成功回调
 *  @param failure    失败回调
 */
- (void)postHttpWithURL:(NSString *) url Parameters:(NSDictionary *) parameters Success:(httpResponseSuccess) success Failure:(httpResponseFailure) failure;

// 文件压缩成 NSData 格式 上传
- (void)uploadFileWithURL:(NSString *)url Parameters:(NSDictionary *)parameters ImageFiles:(NSArray *)imageFiles names:(NSArray *)names Success:(httpResponseSuccess) success Failure:(httpResponseFailure) failure;

// 含有上产进度的 POST 请求
- (void)postHttpWithURL:(NSString *)url Parameters:(NSDictionary *)parameters uploadProgress:(httpUploadProcess)process Success:(httpResponseSuccess)success Failure:(httpResponseFailure)failure;

/**
 *  上传文件,支持block回调
 *
 *  @param url        上传路径URL
 *  @param parameters 上传参数
 *  @param imageFiles 图片URL集合
 *  @param audioFiles 音频URL集合
 *  @param videoFiles 视频URL集合
 *  @param success    上传成功回调
 *  @param failure    上传失败回调
 */
- (void)uploadFileWithURL:(NSString *)url Parameters:(NSDictionary *)parameters ImageFiles:(NSMutableArray *)imageFiles AudioFiles:(NSMutableArray *)audioFiles VedioFiles:(NSMutableArray *)videoFiles Success:(httpResponseSuccess) success Failure:(httpResponseFailure) failure;

// 苹果原生的GET请求写法
- (void)getHttpUrl:(NSString *)urlStr success:(responseSuccess)success;

@end

NS_ASSUME_NONNULL_END
